你開車接近一座被大型車擋住視線的十字路口。
本車先收到一筆訊息,宣告橫向來車正以 50 km/h 接近。幾乎同一時間,另外四個不同身分也回報相近位置與方向,像是有一整排車準備穿越路口。
如果接收端把「五個身分都這樣說」當成五份獨立證據,可能立刻提高警示等級。
但現場也可能是另一種情況:道路上只有一台惡意車輛,卻同時操控五個邏輯身分。它宣告的位置甚至不在自己真正行駛的車道上。
實際道路
→ 只有一台惡意車輛
接收端看到的 V2X 訊息
→ Car-21 位於路口東側
→ Car-47 位於路口東側
→ Car-88 位於路口東側
→ Car-92 位於路口東側
→ Car-105 位於路口東側
每一筆訊息都可能具有正確格式,甚至通過憑證與數位簽章驗證,內容卻不一定符合真實道路。
今天要分析三種容易混在一起的 V2X 欺騙:位置欺騙、假資料/假事件,以及 Sybil Attack。
讀完這篇文章,你應該能夠:
V2X 訊息不是直接從「真實世界」跳進 Radio。
傳送端通常先取得定位與車內感測資料,由 Application 建立 BSM、CAM、DENM 或其他應用訊息,再經安全封裝與無線通訊送到接收端。
攻擊或故障可以發生在不同位置:

圖 1:定位來源遭欺騙、Application 建立假資料,以及單一實體操控多個身分位於不同層次;使用 Mermaid 繪製
| 類型 | 主要被操控的對象 | 接收端看到的表面現象 |
|---|---|---|
| GNSS/PNT 欺騙 | 傳送端用來計算位置或時間的外部訊號 | 合法裝置依錯誤定位結果建立訊息 |
| 假位置/假資料 | V2X Payload 內的宣告內容 | 訊息位置、速度或狀態和真實情境不一致 |
| 假事件 | 道路事件的類型、位置、時間或有效範圍 | 接收端看見不存在或已失效的道路危險 |
| Sybil Attack | V2X 邏輯身分與憑證使用 | 一個實體看起來像多個獨立車輛或 Station |
這幾種情境可以分開出現,也可以組合。
例如一台遭 GNSS 欺騙的正常車輛,可能無意間簽署錯誤位置。另一台持有合法憑證的惡意車輛,則可能直接修改 Payload,完全不需要干擾 GNSS。
如果它還能同時使用多個身分,就可能把同一份假事件包裝成「許多車都觀察到」的樣子。
Location Spoofing 常被翻成位置欺騙,但這個詞本身沒有指出錯誤位置從哪裡產生。
分析時至少要分成兩條路徑。
GNSS 是 Global Navigation Satellite System 的縮寫,也就是全球導航衛星系統。GPS 則是其中一套系統。
GNSS Spoofing 會讓接收器把延遲或偽造訊號當成可信來源,進而計算出錯誤的位置、速度或時間。
概念路徑是:
偽造或受操控的 GNSS-like 訊號
→ 車上接收器計算出錯誤 PNT
→ V2X Application 讀取這個結果
→ 建立並簽署錯誤位置訊息
→ 接收端收到「簽章有效但位置錯誤」的資料
這裡的 PNT 是 Positioning, Navigation and Timing,也就是定位、導航與授時。
傳送端可能沒有遭到 Application 入侵,憑證與私鑰也沒有外洩。問題發生在 Application 信任的資料來源已經被欺騙。
因此只驗證 V2X 簽章,無法回頭證明 GNSS 接收器當時使用的訊號正確。
攻擊者也可能完全不碰 GNSS。
如果它已控制 V2X Application,或模擬環境刻意建立惡意節點,就能保留自己的真實位置,卻在 Payload 中填入另一組座標:
實際位置 p_real
車上量測位置 p_sensor
訊息宣告位置 p_message
正常情況下,三者應在可解釋的誤差範圍內接近,但不會永遠完全相等。
位置欺騙實驗真正要控制的是:
p_real 保持不變
p_sensor 依實驗模型決定是否加入誤差
只讓 p_message 產生可控偏移
如果為了模擬假位置,直接把 SUMO Vehicle 搬到錯誤道路上,Ground Truth 也跟著改變,就無法再區分「車輛真的移動」與「車輛對外說謊」。
Day 13、Day 16 與 Day 17 一直保留 Ground Truth 和 Payload 的邊界,目的就在這裡。
接收端看見不合理座標,也不能立刻宣判惡意行為。
錯誤還可能來自:
所以位置合理性檢查應輸出「可信度降低」或「需要調查的異常」,而不是只靠一筆偏差就完成攻擊歸因。
位置資料的危險不只在經緯度顯示錯誤,而是它會進入後續的相對路徑計算。
假設本車接近十字路口,接收端會利用來源車輛的位置、速度與 Heading 預測兩條軌跡是否相交。
如果一台實際位於平行道路的車宣告自己正在橫向接近,可能出現:
假位置進入 Local Dynamic Map
→ 系統推算出不存在的碰撞路徑
→ 警示被提高
→ 駕駛分心或不必要減速
反方向也可能發生:
真正接近路口的車宣告自己位於遠處
→ 接收端低估相交風險
→ 重要警示沒有及時出現
因此位置欺騙可能造成 False Positive,也可能造成 False Negative。
哪一種結果更嚴重,要看應用、交通情境、警示策略及本車感測能力,不能只用「誤差幾公尺」決定。
False Data(假資料)比假位置更廣。
攻擊者或故障節點可以宣告:
這些資料可能使用正確的 ASN.1 Encoding,通過欄位範圍檢查,也可能由有效憑證簽署。
「格式有效」只能證明 Decoder 可以依 Profile 解析,不能證明內容符合物理世界。
假設每個欄位單獨看都在允許範圍內:
speed = 50 km/h
heading = 90°
position= 路口東側車道
如果上一筆訊息顯示同一來源在 100 ms 前位於 200 公尺外,這組資料仍可能形成不可能的位移。
合理性檢查不能只做單欄上限與下限,還要檢查:
ETSI TS 103 759 V2.2.1 將本地檢查分成單筆訊息、同來源歷史、Local Dynamic Map、本車感測,以及跨訊息/跨來源一致性等類別,並在附錄列出 CAM/DENM 的檢查範例。
假事件不是一筆亂碼,而可能是一段結構完整的事件敘事。
以 DENM 概念為例,惡意或故障節點可以建立:
Action ID = Event-91
Event Type = 道路施工
Event Position = 路口西側車道
Detection Time = 現在
Validity = 15 分鐘
Traffic Direction = 西向
這些欄位都可能符合格式與範圍,事件卻根本不存在。
接收端若只確認「簽章有效、Validity 尚未到期」,便可能讓假事件長時間留在 Local Dynamic Map,甚至影響 Route Planning 或交通管理。
| 情境 | 事件原本存在嗎? | 攻擊者主要改變什麼? |
|---|---|---|
| False Event | 不一定,可能從一開始就是虛構 | 事件內容本身 |
| Replay | 原始訊息曾在過去有效 | 再次出現的時機與情境 |
| 未正確終止 | 事件可能曾經存在 | 事件生命週期與有效狀態 |
| 錯誤更新 | 事件存在,但更新內容不正確 | 位置、影響範圍、類型或時間 |
同一個攻擊也可能把兩者結合:先記錄一筆真正的道路施工事件,等工程結束後再重播,讓過期事件看起來重新出現。
Day 20 的 Freshness 概念到了 V2X 仍然成立,只是接收端還要加入 Action ID、Reference Time、Validity 與事件更新順序。
Sybil Attack 的核心不是「說了一個假名字」,而是一個實體或控制主體同時呈現多個看似獨立的邏輯身分。
在 V2X 情境中,攻擊者可能讓接收端以為:
UN Regulation No. 155 的威脅清單直接將 Sybil Attack 描述為偽裝其他車輛,讓道路看起來像有很多車。
假設接收端採用簡單規則:
只要三個不同 Sender 都回報道路壅塞
→ 就把事件標記為已確認
這項規則隱含一個重要假設:三個 Sender 是三個獨立觀察者。
Sybil Attack 正是破壞這項假設。
如果一個攻擊者控制三個身分,三票仍然只來自一個實體與一組感測來源。
因此接收端不能只計算 senderId 數量,還要評估證據是否真的獨立:
Radio Signal Strength 或相似軌跡可以成為線索,卻不應單獨當成 Sybil 證明。無線傳播、遮蔽與天線差異都會讓這類觀察具有不確定性。
V2X 系統常使用 Pseudonym Certificate(假名憑證)降低長期追蹤風險。
裝置可以在不同時間更換對外身分,避免每一筆訊息都用永久識別碼串起完整行駛軌跡。
系統也可能預先配置一組效期重疊的假名憑證。持有多張同時有效的憑證,本身是憑證生命週期與隱私設計的一部分,不是多台車的證據。判斷重點在於裝置是否同時或協調使用多個身分,讓同一個控制主體被誤算成多個獨立來源。
正常假名切換和 Sybil Attack 的差異是:
| 情境 | 目的 | 接收端看到的身分關係 |
|---|---|---|
| 正常假名切換 | 降低長期可追蹤性 | 同一裝置可持有多張有效憑證,但依政策切換,不把自己重複宣告成多個來源 |
| Sybil Attack | 製造多個獨立參與者的假象 | 同一控制主體同時或協調使用多個身分影響判斷 |
| 憑證遭竊 | 冒用其他合法裝置的金鑰與權限 | 攻擊者可能真的持有多組不同裝置憑證 |
| 測試環境多節點模擬 | 驗證系統行為 | 多個身分由受控場景明確建立,不對外宣稱是真實道路參與者 |
只看到 Station ID 改變,不能直接標記 Sybil。
接收端也不應為了抓 Sybil,強迫所有安全訊息永遠使用可追蹤的永久身分。這會破壞原本的隱私目標。
真正的安全設計要同時處理兩個看似衝突的需求:
日常接收端
→ 不需要知道真實車主身分
憑證與誤用管理
→ 必須限制多重憑證被同時濫用
→ 在符合政策與程序時能處理惡意裝置
ETSI Trust and Privacy Management 與美國 SCMS 的設計,都把假名憑證、授權、信任與撤銷放進專門的管理架構,而不是把永久車輛 ID 直接放進每一筆廣播。
| 攻擊情境 | 是否需要多個身分 | 簽章可能有效嗎? | 主要檢查 |
|---|---|---|---|
| GNSS Spoofing | 不需要 | 可以,正常裝置簽署錯誤 PNT | 多來源定位、慣性感測、地圖與時間連續性 |
| Payload 假位置 | 不需要 | 可以,若惡意節點仍持有有效憑證 | Ground Truth/感測融合、軌跡與道路合理性 |
| 假道路事件 | 不需要 | 可以,若來源具有相關憑證或權限 | 事件來源、時間、位置、角色權限與獨立佐證 |
| Sybil Attack | 需要多個邏輯身分 | 每個身分都可能具有可驗證憑證 | 憑證使用政策、身分獨立性、行為關聯與誤用分析 |
| Replay | 不需要 | 原始簽章可能仍可驗證,取決於 Profile 與時間檢查 | Generation Time、Sequence、Validity 與接受窗口 |
這張表說明一件重要的事:簽章失敗是明確問題,簽章成功卻只是後續情境判斷的起點。
IEEE 1609.2 與 ETSI TS 103 097 等安全規格會定義安全訊息格式、憑證與處理方式。
在適用 Profile、信任鏈與金鑰都正確的前提下,接收端可以提高對以下事項的信心:
但簽章本身不能證明:
可以把兩種問題分開:
Authenticity/Integrity
→ 誰用哪一個憑證保護了這筆資料?途中是否遭改動?
Data Plausibility/Trustworthiness
→ 這個來源宣告的內容,和物理世界及其他證據是否一致?
沒有安全驗證時,合理性檢查很容易被任意來源淹沒。
只有安全驗證時,合法但故障或惡意的裝置仍可能送出錯誤內容。
兩層都需要。
合理的接收流程不應從「收到封包」直接跳到「採用內容」。

圖 2:格式、安全驗證、新鮮度、合理性與交叉佐證處理不同問題。檢查失敗或證據不足時,要依風險拒絕、降權或隔離,並保存必要證據;使用 Mermaid 繪製
先確認訊息能依正確的標準版本與 Profile 解碼:
格式錯誤應在安全邊界內拒絕,不能讓 Parser 問題跨進其他車內網域。
接著檢查:
這一層處理未授權來源與傳輸途中竄改,不負責替位置與事件背書。
接收端還要確認:
過期訊息即使當年由合法裝置簽署,也不應無條件再次採用。
對單筆內容進行:
這些檢查可以擋下明顯不可能的資料,卻不一定能識別精心選擇的「看起來合理」假位置。
把同一來源近期訊息串成軌跡,再檢查:
這一層需要保存短期狀態,也要處理正常封包遺失與假名變更,不能把每個斷點都當成攻擊。
真正有力的內容驗證通常來自不同觀察來源:
不過,來源數量不等於來源獨立性。
如果五筆訊息都由同一個 Sybil 節點產生,單純多數決只會把同一份錯誤算五次。
接收端不一定只有「接受」和「永久封鎖」兩種選擇。
依應用風險可以:
警示或控制越可能造成 Safety 影響,失效處理越不能只靠單一外部訊息。
Misbehaviour Detection(誤用/異常行為偵測)可以在本地檢查訊息與行為。
Misbehaviour Reporting 則把必要證據送到中央權責單位,讓它彙整不同 Station 的觀察,再進行全域分析與後續反應。
ETSI TS 103 759 V2.2.1 讓 ITS Station 將本地偵測結果與必要證據製成報告,再送到 Misbehaviour Authority。後端可以結合其他資訊判定發生了什麼,再決定是否採取憑證撤銷等回應。
兩者不能混成:
本車看到一次異常
→ 立刻讓全系統永久撤銷對方所有憑證
單一觀察可能受到感測誤差、地圖錯誤或攻擊者栽贓影響。
中央分析也要防止 Misbehaviour Reporting 本身被濫用成 DoS 或誤報工具。
較完整的流程是:
本地偵測異常
→ 保存觸發規則、時間、位置與相關 V2X PDU
→ 依政策決定是否回報
→ 中央單位彙整不同來源與歷史行為
→ 完成全域判斷與反應
→ 更新信任、撤銷或維運處置
本地功能仍要先安全退化,不能等中央回覆後才處理眼前的十字路口風險。
Day 17 的 Day17StatusMessage 已經保留:
senderId
sequenceNumber
senderPosition
senderSpeed
sentAt
SUMO/TraCI 另有真正的 Vehicle Position 與 Speed。
因此 Day 21 不需要修改路網,也不需要接觸真實 V2X Radio,就能先設計三組隔離模擬。
physicalNode = carA
logicalId = carA-normal
groundTruth = SUMO(carA).position
declared = groundTruth
這組用來確認正常位置誤差、封包遺失與接收時序,不能把所有 declared != receiverPosition 都誤判成攻擊。
physicalNode = carA
logicalId = carA-normal
groundTruth = SUMO(carA).position
declared = groundTruth + controlledOffset
路網、Route、Random Seed、Radio Model 與 Message Rate 都保持不變。
唯一主要變因是 declaredPosition 的偏移,這樣才能量測:
physicalNode = carA
logicalId = sybil-01 declaredPosition = P1
logicalId = sybil-02 declaredPosition = P2
logicalId = sybil-03 declaredPosition = P3
這裡必須另外保存 physicalNode → logicalId[] 的 Ground Truth 映射。
如果模擬器只是建立三台真正獨立的 SUMO Vehicle,就不是「一個實體假裝三台車」的 Sybil Ground Truth。
下面是一段教學用智慧十字路口紀錄。
它不是 BSM、CAM 或 DENM 的實際 ASN.1,也不代表任何特定部署使用相同欄位:
Ground Truth
physicalNode = attacker-1
actualPosition = 路口南側 42 m
Message A
logicalId = car-301
declaredPosition = 路口東側 60 m
speed = 48 km/h
signature = valid
Message B
logicalId = car-302
declaredPosition = 路口東側 52 m
speed = 47 km/h
signature = valid
Message C
logicalId = car-303
event = 東向車道壅塞
eventPosition = 路口東側
signature = valid
接收端同時觀察到:
car-301 與 car-302 的軌跡幾乎完全平行請先回答:
先停在這裡,不要急著往下滑!
請先把 Physical Node、Logical Identity、Ground Truth、Payload 與 Signature 分層標出,再往下對照作者的示範答案。
簽章有效代表訊息通過這組教學情境中的密碼學驗證,可以提高對私鑰持有者與受保護內容未遭途中修改的信心。
它不能證明 declaredPosition、速度與壅塞事件符合現場。
Message A 與 B 的宣告位置和 attacker-1 Ground Truth 不一致,比較接近 Payload 層的假位置。
這段紀錄沒有描述 GNSS 接收器遭到偽造訊號影響,因此不能直接稱為 GNSS Spoofing。
三個 Logical ID 加上高度相似的時間與軌跡,是 Sybil 假設的重要線索,但只靠接收端的一次局部觀察仍不足以完成全域歸因。
正常車流、相近路線、定位誤差與假名切換都可能造成部分相似現象。
接收端可以先:
是否顯示警示,仍要看本車感測器可見度、應用風險與安全退化策略。
「沒有獨立佐證」不一定代表可以完全忽略訊息,因為大型車遮蔽本來就是 V2X 想補足的場景。
較合理的做法是降低依賴程度,避免把可疑資料直接轉成高權限控制,同時保留本車既有感測與駕駛警示能力。
這份案例是隔離模擬與威脅分析示範,不代表任何特定車款、RSU 或 V2X 部署存在相同弱點。
安全與法律提醒: GNSS 與 V2X 無線測試可能干擾道路使用者及公共系統。本文不提供對真實接收器、道路車輛或公共 RSU 發射偽造訊號的操作。所有位置修改與多身分情境都限定在 SUMO/OMNeT++、封閉測試台或明確取得授權的環境。
若要讓 Day 21 的模擬結果在 Day 30 進入 TARA,至少保存:
| 證據 | 要回答的問題 |
|---|---|
| Version Tuple 與完整設定 | 這次使用哪一組 SUMO、OMNeT++、Veins 與模型參數? |
| SUMO Mobility Ground Truth | Physical Vehicle 真正位於哪裡? |
| Payload 宣告內容 | 惡意節點對外宣告了什麼位置、速度與事件? |
| Physical/Logical Identity 映射 | 幾個對外身分由幾個實體節點控制? |
| 安全驗證結果 | 格式、簽章、憑證、權限與新鮮度各自是否通過? |
| 本地偵測理由 | 哪一項地圖、運動、跨訊息或感測規則觸發? |
| Application Decision | 訊息被採用、降權、隔離還是拒絕? |
| 交通與警示影響 | 車速、Route、等待時間或 HMI 警示如何改變? |
| False Positive/Negative | 正常訊息是否被誤判?攻擊訊息是否漏過? |
| 誤用回報 | 保存了哪些 PDU 與觀察脈絡?是否符合隱私與政策? |
如果只保留「攻擊後車輛減速」的畫面,就無法知道問題來自假位置、Sybil 多數決、Radio Loss,還是交通場景本來就遇到紅燈。
完整證據要把 Ground Truth、宣告內容、驗證結果與交通反應放在共同時間軸上。
簽章保護來源與受保護內容完整性,不會驗證感測器與物理世界。
如果身分不獨立,Sybil Attack 可以把一個來源放大成多數。
GNSS 誤差、地圖問題與時間不同步也會形成異常。偵測、歸因與撤銷要分層處理。
無線訊號強度會受到距離、遮蔽、天線與干擾影響,只能作為多項證據之一。
永久可追蹤 ID 可能降低部分身分歧義,卻會帶來嚴重隱私成本,也沒有解決遭入侵合法裝置與假資料問題。
Misbehaviour Detector 本身也可能誤判。任何會影響車輛行為的反應,都要評估 False Positive、可用性與 Safety Consequence。
| 攻擊路徑階段 | 本篇可以建立的模擬證據 | 尚未證明的部分 |
|---|---|---|
| 取得 V2X 傳送能力 | 惡意 Application 能建立研究用訊息 | 真實裝置如何取得憑證、Radio 與傳送權限 |
| 宣告假位置 | Payload Position 和 SUMO Ground Truth 可控分離 | 量產裝置是否存在相同控制缺口 |
| 建立假事件 | 研究用 Event 可在接收端出現 | 實際 Profile、權限與事件觸發規則 |
| 建立多身分 | 一個 Physical Node 對應多個 Logical ID | 真實 PKI 是否允許這些憑證同時被濫用 |
| 接收端採用 | Application Decision 與偵測 Log | 量產車的感測融合、HMI 與控制策略 |
| 可能損害 | 警示、車速、Route 或交通指標變化 | 真實 Safety、營運、財務與隱私損害 |
這張表能避免把「模擬器允許改字串」直接寫成「真實 V2X PKI 已被破解」。
Day 21 的目標,是建立可重現的欺騙模型與驗證問題,不是對任何現行部署做漏洞宣告。
今天看見 V2X 即使通過簽章,仍可能包含錯誤位置、假事件或由單一實體製造的多重身分。
Day 22 將開始建立防線,從 IDS、Secure Gateway、Authentication 與 Segmentation 出發,看看系統如何限制異常訊息、保存證據,並在不確定的情況下安全退化。